package com.sh.redis.controller;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class findRestaurant {
    /**
     * 假设 Andy 和 Doris 想在晚餐时选择一家餐厅，并且他们都有一个表示最喜爱餐厅的列表，每个餐厅的名字用字符串表示。
     *
     * 你需要帮助他们用最少的索引和找出他们共同喜爱的餐厅。 如果答案不止一个，则输出所有答案并且不考虑顺序。 你可以假设答案总是存在。
     *
     * 来源：力扣（LeetCode）
     * 链接：https://leetcode-cn.com/problems/minimum-index-sum-of-two-lists
     * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
     */

    public static void main(String[] args) {
        String[] arr1 = new String[]{"Shogun", "Tapioca Express", "Burger King", "KFC"};
        String[] arr2 = new String[]{"Piatti", "The Grill at Torrey Pines", "Hungry Hunter Steakhouse", "Shogun"};

       String[] result =  solution(arr1, arr2);
       if(result != null && result.length>0){
           for(int i=0;i<result.length;i++){
               System.out.println(result[i]);
           }
       }
    }

    private static String[] solution(String[] arr1, String[] arr2) {
        HashMap<String, Integer> map1 = new HashMap<>();
        for(int i = 0; i< arr1.length;i++){
            map1.put(arr1[i], i);
        }

        int min = Integer.MAX_VALUE;
        List<String> result = new ArrayList<>();
        for(int j = 0 ; j<arr2.length; j++){
            if(map1.containsKey(arr2[j])){
                int m = j+map1.get(arr2[j]);
                if(min > m){
                    min = m;
                    result = new ArrayList<>();
                    result.add(arr2[j]);
                }else if (min == m){
                    min = m;
                    result.add(arr2[j]);
                }

            }
        }
       return result.toArray(new String[result.size()]);


    }


}
